from flask import current_app
from flask import g
from flask import session
from flask import redirect
from info import user_login_data
from info.models import User
from info.response_code import RET
from . import admin_blue
from flask import render_template, request, jsonify


# 后台主页内容
# 请求路径: /admin/index
# 请求方式: GET
# 请求参数: 无
# 返回值:渲染页面index.html,user字典数据
@admin_blue.route('/index')
@user_login_data
def index():

    # 获取用户信息,展示页面
    return render_template("admin/index.html", user_info=g.user.to_dict())


# 获取/登陆,管理员登陆
# 请求路径: /admin/login
# 请求方式: GET,POST
# 请求参数:GET,无, POST,username,password
# 返回值: GET渲染login.html页面, POST,login.html页面,errmsg
@admin_blue.route('/login', methods=["GET", "POST"])
@user_login_data
def admin_login():
    # 1.判断请求方式是否为get
    if request.method == "GET":

        # 判断管理员是否登陆过
        if session.get("is_admin"):
            return redirect("/admin/index")

        return render_template("admin/login.html")

    # 2.如果不是GET请求,获取参数
    username = request.form.get("username")
    password = request.form.get("password")

    # 3.参数校验(为空校验)
    if not all([username, password]):
        return render_template("admin/login.html", errmsg="参数不全")

    # 4.根据用户登陆名称查询管理员对象,并判断是否存在
    try:
        admin = User.query.filter(User.mobile == username, User.is_admin == True).first()
    except Exception as e:
        current_app.logger.error(e)
        return jsonify(errno=RET.DATAERR, errmsg="获取用户失败")

    if not admin:
        return jsonify(errno=RET.DBERR, errmsg="用户不存在")

    # 5.判断管理员密码是否正确
    if not admin.check_password(password):
        return render_template("admin/login.html", errmsg="管理员密码不存在")

    # 6.记录管理员到session信息
    session["user_id"] = admin.id
    session["nick_name"] = admin.nick_name
    session["mobile"] = admin.mobile
    session["is_admin"] = True

    # 7.返回首页重定向
    return redirect("/admin/index")
